package com.spring.demo11.eg1;

import org.junit.Test;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import java.util.Locale;
import java.util.concurrent.TimeUnit;

/**
 * @author vhans
 */
public class MessageSourceTest {

    @Test
    public void test1() {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfig1.class);
        // 未指定Locale，此时系统会取默认的locale对象，本地默认的值中文【中国】，即：zh_CN
        System.out.println(context.getMessage("name", null, null));
        // CHINA对应：zh_CN
        System.out.println(context.getMessage("name", null, Locale.CHINA));
        // UK对应en_GB
        System.out.println(context.getMessage("name", null, Locale.UK));
    }

    // 动态参数使用
    @Test
    public void test2() {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfig1.class);
        // 未指定Locale，此时系统会取默认的locale对象，本地默认的值中文【中国】，即：zh_CN
        System.out.println(context.getMessage("personal_introduction", new String[]{"JAVA"}, null));
        // CHINA对应：zh_CN
        System.out.println(context.getMessage("personal_introduction", new String[]{"JAVA"}, Locale.CHINA));
        // UK对应en_GB
        System.out.println(context.getMessage("personal_introduction", new String[]{"JAVA"}, Locale.UK));
    }

    // 监控国际化文件的变化
    @Test
    public void test3() throws InterruptedException {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfig2.class);

        for (int i = 0; i < 2; i++) {
            System.out.println(context.getMessage("name", null, Locale.CANADA));
            // 修改message_zh_CN文件，在上一个name的值缓存失效后，将引用新的值
            TimeUnit.SECONDS.sleep(7);
        }
    }

}
